package cn.xzqwjw.taskmanager.common.validator;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.text.SimpleDateFormat;

/**
 * @author rush
 */
public class ParamDateTimeValidatorClass implements ConstraintValidator<ParamDateTimeValidator, String> {

  private ParamDateTimeValidator validator;

  @Override
  public void initialize(ParamDateTimeValidator validator) {
    this.validator = validator;
  }

  /**
   * 前端传递的时间参数
   *
   * @param value 用户输入的值，如从前端传入的某个值
   */
  @Override
  public boolean isValid(String value, ConstraintValidatorContext cvContext) {
    // 如果 value 为空则不进行格式验证
    // 为空验证可以使用 @NotBlank @NotNull @NotEmpty 等注解来进行控制，职责分离
    if (value == null) {
      return true;
    }
    String format = validator.format();
    if (value.length() != format.length()) {
      return false;
    }
    try {
      new SimpleDateFormat(format).parse(value);
    } catch (Exception e) {
      return false;
    }
    return true;
  }

}